const fs = require('fs') // 文件系统模块
const path = require('path')// 路径功能模块
// 导入 express 创建路由
const router = require('express').Router()
const upload = require('../../common/upload')
var host_config = require('../../host_config')
const host_url = host_config.url;

// 预览图片
// 上传图片
// URL: /api/photo/preview
// 完整地址: http://localhost:3000/api/photo/preview
// 方式: post
// 参数：photo
router.post('/preview', upload.single('img'), async (req, res) => {
    let file = req.file;
    if (file == undefined) {
        res.send({
            code: -1,
            msg: '上传图片失败。'
        })
    }
    else {
        // 定义图片路径 
        // http://localhost:3000/upload/images/1.jpg
        let picUrl = `${host_url}/upload/images/${file.filename}`;
        // 反馈图片上传信息
        if (picUrl) {
            let id = Math.random().toString().slice(2);
            res.send({
                code: 200,
                msg: '上传图片成功。',
                picUrl,
                id
            });
        }
        else {
            res.send({ code: -1, msg: '上传图片失败。' });
        }
    }
})

// 删除图片
// URL: /api/photo/remove
// 方式：post
// 参数：picUrl (图片的路径) dirName
// 删除图片
router.post('/remove', async (req, res) => {
    // 相对地址 http://
    let picUrl = req.body.picUrl;
    let dirName = req.body.dirName || 'upload';
    // console.log('1.0',picUrl)
    if (picUrl == undefined || picUrl == '') {
        res.send({
            code: -1,
            msg: '缺少参数'
        })
    }
    else {
        //通过slice方法，分割出图片前面的url地址
        let index = picUrl.indexOf(dirName);
        // 判断该图片路径是否存在
        if (index > -1) {
            // 拼接图片路径 (查找图片)
            let temp_path = path.join(__dirname, '../../public/', picUrl.slice(index));
            console.log('xx', temp_path);
            // fs.unlink 删除文件
            fs.unlink(temp_path, (err) => {
                // err 如果为null 就删除图片成功 ； 否则删除失败
                if (err) {
                    res.send({
                        code: -1,
                        msg: '删除图片失败。'
                    })
                }
                else {
                    //删除图片文件成功
                    res.send({
                        code: 200,
                        msg: '删除图片成功。'
                    })
                }
            })
        }
        else {
            res.send({
                code: 404,
                msg: '该路径找不到图片资源。'
            })
        }
    }

})



// 上传图片 (富文本框组件)
// URL: /api/photo/upload_article
// 参数： photo
router.post('/upload_article', upload.single('photo'), async (req, res) => {
    // 接收前端的文件(图片)
    let file = req.file;
    let alt = req.body.alt || '默认说明'
    let href = req.body.href || '默认链接'
    if (file == undefined) {
        res.send({
            code: -1,
            msg: '上传图片失败。'
        })
    }
    else {
        // 定义图片路径 
        // http://127.0.0.1:3000/images/1.jpg
        let picUrl = `${host_url}/upload/images/${file.filename}`;
        // 反馈图片上传信息
        let info = {
            // errno 即错误代码， 0表示没有错误。
            // 如果有错误，errno != 0，可通过下文中的监听函数 fail 拿到该错误码进行自定义处理
            "errno": 0,
            // data 是一个数组，返回图片Object，Object中包含需要包含url、alt和href三个属性,它们分别代表图片地址、图片文字说明和跳转链接,alt和href属性是可选的，可以不设置或设置为空字符串,需要注意的是url是一定要填的。
            "data": [
                {
                    url: picUrl,
                    alt,
                    href
                },
            ]
        }
        // 按照富文本框组件的要求 设置响应数据的格式
        res.send(info)
    }
})




// 把当前路由挂载到系统对象上
module.exports = router;